package com.twb.auth.service;

import com.twb.auth.entity.twbResource.TwbResource;
import com.twb.auth.entity.twbResource.dto.*;
import com.twb.auth.entity.twbResource.vo.*;
import com.twb.core.base.entity.TwbPageInfo;
import com.twb.core.base.service.IBaseService;

import javax.validation.constraints.NotBlank;
import java.util.List;

/**
 * @ClassName ITwbResourceService
 * @Description 资源管理service
 * @author DSY
 * @date 2018年11月3日 下午9:59:07
 */
public interface ITwbResourceService extends IBaseService<TwbResource> {

	/**
	 * @Title  listResourceAll
	 * @Description 获取全部资源
	 * @return
	 * @author DSY
	 * @date 2018年11月6日 下午3:37:09
	 */
	public List<TwbResource> listResourceAll(String appId);

	/**
	 * @Title  listResourceByUserId
	 * @Description 根据用户ID获取该用户的所有资源
	 * @param userId
	 * @return
	 * @author DSY
	 * @date 2018年11月6日 下午3:37:23
	 */
	public List<TwbResource> listResourceByUserId(String userId, String appId);

	/**
	 * @Title  searchTwbResource
	 * @Description 查询资源信息
	 * @param vo
	 * @return
	 * @author DSY
	 * @date 2018年11月9日 下午12:06:16
	 */
	public TwbPageInfo<SearchTwbResourceDto> searchTwbResource(SearchTwbResourceVo vo);

	/**
	 * @Title  searchTwbResourceTree
	 * @Description 查询资源树
	 * @param vo
	 * @return
	 * @author DSY
	 * @date 2018年11月9日 下午2:45:47
	 */
	public List<SearchTwbResourceTreeDto> searchTwbResourceTree(SearchTwbResourceTreeVo vo);

	/**
	 * @Title  getTwbResourceById
	 * @Description 根据ID获取资源信息
	 * @param id
	 * @return
	 * @author DSY
	 * @date 2018年11月9日 下午4:14:41
	 */
	public GetTwbResourceByIdDto getTwbResourceById(String id);

	/**
	 * @Title  saveTwbResource
	 * @Description 保存资源信息
	 * @param resource
	 * @return
	 * @author DSY
	 * @date 2018年11月9日 下午5:31:00
	 */
	public boolean saveTwbResource(TwbResource resource);

	/**
	 * @Title  searchAuthResourceTree
@Override
	
	 * @Description 机构、角色经办权限树
	 * @return
	 * @author DSY
	 * @date 2018年11月21日 下午5:47:56
	 */
	public List<SearchAuthResourceTreeDto> searchAuthResourceTree(SearchAuthResourceTreeVo vo);

	/**
	 * @Title  searchRoleAccreditResourceTree
	 * @Description 角色授权权限树
	 * @param vo
	 * @return
	 * @author DSY
	 * @date 2018年11月21日 下午6:15:29
	 */
	public List<SearchRoleAccreditResourceTreeDto> searchRoleAccreditResourceTree(SearchRoleAccreditResourceTreeVo vo);

	/**
	 * @Title  deleteTwbResourceById
	 * @Description 删除资源
	 * @param id
	 * @return
	 * @author DSY
	 * @date 2018年11月26日 下午5:30:27
	 */
	public int deleteTwbResourceById(@NotBlank String id);

	/**
	 * @Title  listChildrenResIds
	 * @Description 子级资源ID
	 * @param parentId
	 * @return
	 * @author DSY
	 * @date 2018年11月26日 下午5:33:21
	 */
	List<String> listChildrenResIds(String parentId);

	/**
	 * @Title saveResourceApi
	 * @Description 绑定资源api
	 * @param resourceId
	 * @param apiIds
	 * @return
	 * @author DSY
	 * @date 2021年5月26日 下午1:51:02
	 */
	public int saveResourceApi(String resourceId, String apiIds);

	/**
	 * @Title searchTwbResourceList
	 * @Description 查询所有资源
	 * @param vo
	 * @return
	 * @author DHL
	 * @date 2022年3月17日 下午8:28:27
	 */
	public List<SearchTwbResourceDto> searchTwbResourceList(SearchTwbResourceVo vo);

	/**
	 * @Title updateTwbResourceById
	 * @Description 更新资源
	 * @param vo
	 * @return
	 * @author DHL
	 * @date 2022年3月17日 下午8:28:27
	 */
	public boolean updateTwbResourceById(UpdateTwbResourceByIdVo vo);
	
	/**
	 * @Title updateResourceStatusById
	 * @Description 更新资源状态
	 * @param id
	 * @param status
	 * @return
	 * @AuthorOriginally DSY
	 * @date 2022年8月2日 下午5:04:11
	 */
	public int updateResourceStatusById(String id,String status);
}
